package cn.waqwb.mapper;

import cn.waqwb.pojo.Users;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * @Classname UsersMapper
 * @Description 数据访问层接口，规定了数据库中的增删改查操作
 * @Date 2022/8/20 19:19
 * @Created by Administrator
 */
public interface UsersMapper {
    //查询全部用户信息
    List<Users> getAll();

    //根据用户主键查用户
    Users getById(Integer id);

    //根据用户名查询用户
    List<Users> getByName(String username);

    //插入用户
    int insert(Users users);

    //删除用户
    int delete(Integer id);

    //更新用户
    int update(Users users);

    //优化后的模糊查询
    List<Users> getByNameGood(String name);

    //模糊查询、用户名或地址查询
    List<Users> getByNameOrAddress(
            @Param("columnName")
            String columnName,
            @Param("columnValue")
            String columnValue);

    //按指定条件进行多条件查询
    List<Users> getByCondition(Users users);

    //有选择的更新
    int updateBySet(Users users);

    //查询多个指定id的用户信息
    List<Users> getByIds(Integer[] ids);

    //批量删除
    int deleteBatch(Integer[] ids);

    //批量增加
    int insertBatch(List<Users> list);

    //批量更新
    int updateBatch(List<Users> list);

    //查询指定日期范围内的用户信息,实体类的成员变量无法包含条件了,所以散给条件
    List<Users> getByBirthday(Date begin, Date end);

    //切换列名进行模糊查询
    //@Param("columnName"):这里定义的columnName的名称是要在xml文件中的${引用定义的名称}
    List<Users> getByColumn(
            @Param("columnName")
            String columnName,
            @Param("columnValue")
            String columnValue);

    //入参是map
    List<Users> getByMap(Map<String,Date> map);

    //返回值是一个值,是map类型,根据主键查用户对象
    Map<String,Object> getReturnMapOne(int id);

    //使用map封装返回多个map的集合--->List<Map<String,Object>>
    List<Map<String,Object>> getReturnMap();
}
